Conversation
Instead of forcing downstream dependencies to also "requires ai.timefold.solver.core", used a transitive dependency.
There was a problem hiding this comment.
Pull request overview
This PR adjusts JPMS module-info.java declarations across Timefold Solver modules to better reflect Maven transitive/optional dependency behavior, and updates the JPMS documentation accordingly.
Changes:
- Promote several
requiresdirectives torequires transitiveto mirror Maven transitive dependencies (core integrations, Spring Boot starter, Quarkus runtime/integrations, persistence modules). - Mark selected dependencies as
requires staticfor optional features (notably Spring Boot autoconfigure’s benchmark support). - Improve JPMS documentation with updated guidance and an example error message.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/benchmark/src/main/java/module-info.java | Makes core dependency transitive for benchmark consumers. |
| spring-integration/spring-boot-starter/src/main/java/module-info.java | Exposes autoconfigure transitively via the starter module. |
| spring-integration/spring-boot-integration-test/src/main/java/module-info.java | Aligns integration-test module dependency on the starter instead of core. |
| spring-integration/spring-boot-autoconfigure/src/main/java/module-info.java | Adds exports/opens and adjusts requires (static/transitive) for Spring Boot autoconfigure. |
| quarkus-integration/quarkus/runtime/src/main/java/module-info.java | Makes solver core transitive and adjusts exported packages. |
| quarkus-integration/quarkus/reflection-integration-test/src/main/java/module-info.java | Aligns test module dependency on Quarkus integration module. |
| quarkus-integration/quarkus/integration-test/src/main/java/module-info.java | Aligns test module dependency on Quarkus integration module. |
| quarkus-integration/quarkus/devui-integration-test/src/main/java/module-info.java | Aligns test module dependency on Quarkus integration module. |
| quarkus-integration/quarkus/deployment/src/main/java/module-info.java | Refactors deployment module requires (including transitive Quarkus runtime). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/module-info.java | Makes solver core transitive for Quarkus Jackson runtime consumers. |
| quarkus-integration/quarkus-jackson/integration-test/src/main/java/module-info.java | Aligns test module dependency on Quarkus Jackson module. |
| quarkus-integration/quarkus-jackson/deployment/src/main/java/module-info.java | Adjusts deployment module exports/requires for Quarkus Jackson extension. |
| quarkus-integration/quarkus-benchmark/runtime/src/main/java/module-info.java | Makes benchmark + quarkus dependencies transitive for runtime consumers. |
| quarkus-integration/quarkus-benchmark/integration-test/src/main/java/module-info.java | Aligns test module dependency on Quarkus benchmark module. |
| quarkus-integration/quarkus-benchmark/deployment/src/main/java/module-info.java | Adjusts deployment module requires to depend on Quarkus deployment module. |
| persistence/jpa/src/main/java/module-info.java | Makes solver core transitive for JPA persistence consumers. |
| persistence/jaxb/src/main/java/module-info.java | Makes solver core transitive for JAXB persistence consumers. |
| persistence/jackson/src/main/java/module-info.java | Makes solver core transitive for Jackson persistence consumers. |
| docs/src/modules/ROOT/pages/integration/integration.adoc | Updates JPMS docs with stronger guidance and an error example. |
| core/src/main/java/module-info.java | Adjusts exports/opens, including broader access to a Gizmo accessor package and an additional JAXB open. |
You can also share your feedback on Copilot code review. Take the survey.
quarkus-integration/quarkus-jackson/deployment/src/main/java/module-info.java
Show resolved
Hide resolved
quarkus-integration/quarkus/runtime/src/main/java/module-info.java
Outdated
Show resolved
Hide resolved
triceo
left a comment
There was a problem hiding this comment.
LGTM when comments resolved one way or another.
…java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 20 out of 20 changed files in this pull request and generated 4 comments.
You can also share your feedback on Copilot code review. Take the survey.
spring-integration/spring-boot-autoconfigure/src/main/java/module-info.java
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 20 out of 20 changed files in this pull request and generated no new comments.
You can also share your feedback on Copilot code review. Take the survey.
|



I have added some missing imports, but also updated some of the "requires" to be "transitive" to closer align to our Maven setup, at least of our Solver jars. We might expand this idea to also other jars we load transitively.
Also added "requires static" for optional dependencies. This ensure the module is only needed at compile time, but is otherwise fully optional.